<?php
    namespace Core\ORM\Exception;

    /**
     * Classe servant pour toutes les Exception généré par les Requete
     *
     * @author mpetrini
     */
    class RequeteException extends \Exception{
        /**
        * @var string $sql
        */
        protected $sql;
        /**
        * Constructeur complet
        * 
        * Si le code est en mode Prod ou PreProd alors cela écrira une ligne dans les logs
        * dans les autres cas cela retourne un message d'erreur formaté<br>
        * Le format du log est le suivant : <br>
        * DateTime;BDD;UtilisateurBDD;MdpBDD;ErreurSQL;RequeteSQL 
        *
        * @param string $sql Requête SQL qui a créée l'erreur
        *  
        * 
        * @return void
        */
        public function __construct($sql) {
            $this->sql = $sql;
            //On récupère la dernière erreur sur la BDD
            $erreurInfo = \Core\ORM\ORMClasse::$lien->errorInfo();
            $message = "Erreur SQL : ".$erreurInfo[2];
            parent::__construct($message, "01", null);
            
            //Génération du message d'erreur
            $ajd = new \DateTime();
            $string =   $ajd->format('Y-m-d H:i:s').";".__DATABASE__.";".__UTILISATEUR__.";".__MOT_DE_PASSE__.";".$this->message.";".
                        $this->sql."\n";
            $handle = fopen(__RACINE__.'logs/bdd.txt', "a+");
            fwrite($handle, $string);
            fclose($handle);
        }
        
        /**
        * Retourne la génération d'erreur
        * 
        * @return string
        */
        public function __toString() {
            return '<br>'.$this->message.'<br>';
        }
    }
?>